package com.shengdong.water.code.utils

import android.annotation.SuppressLint
import java.text.SimpleDateFormat
import java.util.Calendar
import java.util.Date
import java.util.Locale
import kotlin.text.*

@SuppressLint("SimpleDateFormat")
object TimeUtil {

    // 默认日期格式
    private const val DATE_DEFAULT_FORMAT = "yyyy-MM-dd"

    // 默认时间格式
    private const val DATETIME_DEFAULT_FORMAT = "yyyy-MM-dd HH:mm:ss"

    private val dateFormat = SimpleDateFormat(DATE_DEFAULT_FORMAT)

    @SuppressLint("ConstantLocale")
    private val dateTimeFormat = SimpleDateFormat(DATETIME_DEFAULT_FORMAT)

    /**
     * 获取当前时间的格式化字符串
     * @return 格式：YYYY-MM-DD HH:MM:SS
     */
    fun getCurrentFormatTime(): String {
        return dateTimeFormat.format(Date())
    }

    fun getCurrentDate(): String {
        return dateFormat.format(Date())
    }

    /**
     * 将Date转换为格式化的时间字符串
     * @param date 日期对象
     * @return 格式：YYYY-MM-DD HH:MM:SS
     */
    fun formatDate(date: Date): String {
        return dateTimeFormat.format(date)
    }

    /**
     * 获取当前签到时间（秒）
     * @return 返回当天0点到现在的秒数
     */
    fun getSignInSeconds(): Int {
        val calendar = Calendar.getInstance()
        return calendar.get(Calendar.HOUR_OF_DAY) * 3600 +
                calendar.get(Calendar.MINUTE) * 60 +
                calendar.get(Calendar.SECOND)
    }

    /**
     * 获取指定时间的签到秒数
     * @param date 指定的日期
     * @return 返回该日期0点到指定时间的秒数
     */
    fun getSignInSeconds(date: Date): Int {
        val calendar = Calendar.getInstance()
        calendar.time = date
        return calendar.get(Calendar.HOUR_OF_DAY) * 3600 +
                calendar.get(Calendar.MINUTE) * 60 +
                calendar.get(Calendar.SECOND)
    }

    /**
     * 将秒数格式化为 HH:mm:ss 格式
     * @param seconds 秒数
     * @return 格式化后的时间字符串
     */
    fun formatSeconds(seconds: Int): String {
        val hours = seconds / 3600
        val minutes = (seconds % 3600) / 60
        val secs = seconds % 60
        return String.format("%02d:%02d:%02d", hours, minutes, secs)
    }
}